minix3fandomcom_mn-20200213-history
VFS-FS протокол
NOT REVISED ENAMETOOLONG ñèñòåìèéí ïðîöåññûã ¿ðãýëæë¿¿ëýõ óðò õýòýðñýí íºõöºëä ôàéëûí ñåðâåðèéã àæèëëóóëàõ ENAMETOOLONG ñèñòåìèéã ¿ðãýëæë¿¿ëýõ á¿ðýëäýõ¿¿í õýñã¿¿äèéí àëü íýã íü ôàéëûí ñèñòåìèéí äýìæèëòýýñ ºðãºí áàéõ ENOTDIR ñèñòåìèéí ¿ðãýëæëýõ á¿õ õýñã¿¿äèéí çàâñðûí àëü íýã á¿ðýëäýõ¿¿í õýñýã íü êàòàëîã áèø EACCES äóóäàã÷ íü çàâñðûí êàòàëîãóóäûí àëèí äýýð íü ÷ õàéõ õàíäàëòûí çºâøººðºëã¿é áàéõ ENFILE inode-ã¿é áàéõ íü ñàíàõ îéä çºâøººðºãäñºí ELOOP õàéëòûí ÿâöàä SYMLOOP_MAX õîëáîîñóóäàä î÷èõ ENAMETOOLONG ñèñòåìä õàíäàõ çàìûí õ¿ñýëòèéã áóöàæ õóóëàõ íü áóôåðëýãäñýí íºõöºëä õýëáýðæèõã¿é EENTERMOUNT õ¿ðýõ öýãòýý õ¿ðñýí áàéõ ELEAVEMOUNT “..” íü ôàéëûí ñèñòåìèéí ¿íäñýýñ ãàðàõ áà ôàéëûí ñèñòåìèéí ¿íäýñ íü ýõèéí inode äóóäàã÷ áèø ESYMLYNK ÷óõàë sym õîëáîî íü ã¿éöýòãýãäñýí áàéõ EINVAL inode-ã ýõë¿¿ëýõ íü òîäîðõîé õýñýã áàéñàí áà àíõíû çàìûí íýã õýñýã íü “..” áèø OK inode àìæèëòòàé õàéãäàæ íýýãäñýí Òîäîðõîéëîëò • Ýíý õ¿ñýëò íü inode-ä çàíãèäàõ çàìûã øèéäâýðëýäýã. Òóõàéí çºâøººðëèéí çºâõºí REQ_L_GRANT ãýñýí õýñýã íü REQ_L_OFF áàéò èíäåêñýýñ ýõýëäýã. Çàì íü õîîñîí òºãñãºëòýé, ôàéëûí ñåðâåð íü õè÷íýýí áàéò (REQ_L_PATH_OFF- îîñ ýõëýõ) øèéäâýðëýæ ýõëýõýýñ ºìíº õóóëáàðëàõ õýðýãòýéã òîäîðõîéëõîä REQ_L_PATH_LENN-ã õýðýãëýæ áîëäîã. Ýíý óðò íü ºãºãäñºí inode- îîñ ýõýëäýã. Ýíý íü æèíõýíý êàòàëîã þì. Çàì äîòîð çàìûí á¿ðýëäýõ¿¿í õýñã¿¿ä íü ‘/’ òàøóó çóðààñ òýìäýãòýýð òóñãààðëàãääàã. Äàðààëñàí îëîí òàøóó çóðààñ òýìäýãò íü ãàíö äàí òàøóó çóðààñ ìýòýýð õàíääàã. Äàí öýã “.” çàìûí á¿ðýëäýõ¿¿í õýñýã íü áîëîìæîîðîî øèéäâýðëýõýä òóõàéí ÿâöûí äèðåêòîð ìýò ä¿ðñëýãääýã áîë õî¸ð öýã “..” íü áîëîìæîîðîî øèéäâýðëýõýä ýöýã äèðåêòîð ìýòýýð ä¿ðñëýãääýã. Çàìûí íýð¿¿ä íü ýöñèéí á¿ðýëäýõ¿¿íýýñ ãàíö öýãèéã àãóóëàõ òàøóó çóðààñààð òºãñäºã: òýä øèéäâýðëýõýä äèðåêòîð ìýò õýðýãëýãääýã. Õýðâýý òóõàéí çàì õîîñîí áîë çàì íü inode îîñ ýõëýõýä õ¿ðäýã. Салаалах нэрийн эхлэлийн ташуу зураас нь ямар нэгэн утга агуулаагүй, гэхдээ хэрвээ бүх салаа зөвхөн ташуу зураасуудаас бүрдсэн тохиолдолд эдгээрийн хоорондын зайг хоосон орхихын оронд цэг тавиад явбал илүү дээр. Шууд харахын тулд inode хэрэглэдэг, файлын серверүүд залгагчийн энэхүү чиглэл дэх хайлтын зөвшөөрлийг хүлээн авсан шалгасан байх ёстой, ингэхдээ тухайн хэрэглэгч болон Бүртгэл, лавлагааны арга зам зэргийг тодорхойлсон эсэхийг бас шалгана. Хамгийн сүүлчийн салаа замд нэгдээгүй үед инодийг лавлагаа болгон хэрэглэдэг. Ташуу зураасын дагуу явагдах салаа замын нэгдлүүд хэзээ ч сүүлчийн салаа нэгдэл болдоггүй гэж заасан байдаг. Хэрвээ хоосон салаа зам өгөгдсөн бол, эхлэлийн inode нь мэдээлэл хүлээн авах лавлагаа болж чадахгүй. Зөвшөөрлийг хүлээн авахаас гадна шаардлагыг шалгахтай холбоотой нэг зүйл бол орхин үлдээж буй гаргах цэг юм: Дор дурьдсаныг үз. Хэрвээ тухайн инодын гарал (REQ_L_ROOT_INO) тэг бус байвал, үүний inode нь лавлах болж чадах ба файлын сервер нь энэхүү инодоос доошхи салаа замуудыг дээшлүүлэхийг хэзээ ч хүлээн зөвшөөрдөггүй байх ёстой. Inode-ын гаралаас дээшлэлт “..” дээр байвал энэхүү гаралын инодыг лавлагаа болгон хэрэглэнэ, гэхдээ инодын гарал өөрийнхөө эх гаралаар биш өөрөө үүний ангилалыг хийх хэрэгтэй. Хэрвээ өгөгдсөн Inode-ын гарал тэг бол холбогчийн гаралын лавлагаа нь өөр нэг файлын систем дээр байх ёсгүй. Дээшлэлт нь магадгүй гаргах цэгээр дамжиж болох юм. Хэрвээ дээшлэлт нь “..” дээр байвал файлын системийн гаралаас гүйцэтгэгдсэн байна /мөн энэхүү инод нь холбогчийн гаралын лавлагаа биш юм/, гэхдээ файлын сервер нь ELEAVEMOUNT VFS ийн хуурамч-алдаанд буцаж ирсэн байх ёстой, инэгхдээ салаа замын нэгдэлийн эхний тэмдэгт болох “..” баланслах цэгийн хамт эсвэл үүний өмнөх ямар ч ташуу зураасын тэмдэгийн лавлагаа буцсан байх ёстой. Хэрвээ дээшлэлт нь өмнө нь тэмдэглэгдсэн гаралын цэгийн (хэрэглэн REQ_MOUNTPOINT_S)-д ирсэн бол файлын сервэр нь EENTERMOUNT VFS-ийн хуурамч алдаанд буцаж ирсэн байх ёстой, ингэхдээ гаралын цэгийн инодын тоотой хамт буюу баланслах цэгийн эхний тэмдэгийн хамт салаа замын нэгдлүүдээр гаралын цэгүүдийг ижилсүүлсний дараа буцна. /энэ нь ердийн а “/” ташуу шугамын тэмдэг буюу түр зогсоох “/0” тэмдэгийн алин алинаар гүйцэтгэгдэнэ/. Гаралын цэгийн өөрийнх нь гол чанараас гадна, тухайн эхлэлийн инод нь өөрөө гаралын цэг байдаг. Энэ тохиолдолд гаралын цэгээс гарсны дараах /ямар ч ташуу шуагмын тэмдэгтийн дараа/ эхний салаа замын нэгдлүүд “..” д байх ёстой, энэ нь ямар ч тохиолдолд протоколуудын алдаа болон өөр файлын серверүүдийн тодорхой бус чанарыг заадаг. Иймэрхүү замаар гаралын цэгийг орхих үед, файлын серверүүд гаралын цэгийн лавлагаан дахь хайлтын зөвшөөрлүүдийн хүлээн авалтыг шалгах үедээ заавал алгасан өнгөрсөн байдаг. Гаралын цэгийн лавлагааны пропертайзууп нь энэ үед бүхэлдээ нуугдсан байдаг. REQ_L_FLAGS is to be treated like an OR'ed mask of flags (for future compatibility). REQ_L_FLAGS нь OR'ed оролтын хуулбарын адил хамгаалагдсан байна /цаашид зохицуулагдахаар/. Хэрвээ PATH_RET_SYMLINK оролтыг суурилуулсан бол салаа замын нэгдлүүдийн сүүлчийн хэсэг нь тэмдэгттэй жагсаалт болно, дээшлэлт энэхүү тэмдэгтийн жагсаалтын агуулгын дагуу үргэлжлэн явагдах хэрэгтэй байдаг. Тэмдэгтийн жагсаалтуудтай бусад бүх салаа замын нэгдлүүд дээшлэлтийн хугацааны туршид SYMLOOP_MAX –ыг дагаж мөрдөн баримтлах ёстой. Хэрвээ дээшлэлтийн үр дүн EENTERMOUNT, ELEAVEMOUNT, ESYMLINK хүрвэл тэмдэгтийн жагсаалтыг заавал буцаж ирсэн байхаар тооцоолох хэрэгтэй. Хэрвээ тэмдэгтийн жагсаалт дээшлэлтийн процессийн үед ангилагдахаар шийдэгдсэн бол тэмдэгтийн жагсаалт ямар ч эхний салаа замын үлдсэн хэсгийг дагаж мөрдөх ба шинээр үлдэж буй салаа замыг зайлшгүй хэрэглэсэн байх шаардлагатай болдог. Хэрвээ тэмдэгтийн жагсаалтууд (энэ нь '/' ташуу зураасаар эхлээгүй бол) холбоотой бол, файлын сервер нь салаа замыг үргэлжлүүлэн ангилахаар болсон байна гэж тооцоолох хэрэгтэй. If the symbolic link is absolute (i.e. it starts with a slash), then the file server must return the ESYMLINK pseudo-error to VFS. Хэрвээ тэмдэгтийн жагсаалтууд туйлын бол (ташуу зураасаар эхэлдэг бол), файлын серверүүд ESYMLINK – VFS хуурамч алдаанд буцаж ирэх нь гарцаагүй юм. In general, when the file server resolves a symbolic link and then proceeds to return an EENTERMOUNT, ELEAVEMOUNT or ESYMLINK pseudo-error, it must copy back the remaining part of the changed path back into the given granted buffer. Ерөнхийдөө файлын серверүүд тэмдэгтийн жагсаалтуудыг ангилах үед эдгээр нь EENTERMOUNT, ELEAVEMOUNT, ESYMLINK гэх мэт хуурамч алдаанд буцаж ирэх нь гарцаагүй юм, мөн үүний хуулбарыг өөрчлөгдсөн салаа замын үлдэгдэл хэсэг рүү буцаана. The file server must null-terminate the path, and be careful not to exceed the total REQ_L_PATH_SIZE size. Файлын серверүүд нь салаа замыг нюлл-түр зогсоох нь гарцаагүй болсон үед нийт REQ_L_PATH_SIZE хэмжээг ихэсгэхээс болгоомжилж үүнд анхаарах хэрэгтэй. Инодын амжилттай үр дүн инод нээгдэнэ /үүний лавлагааны тоо ихэснэ/ ба үүний нарийн лавлагааны хэсгүүд VFS буцаж ирнэ. Гаралтын цэгрүү нэвтэрч чадсанаар (EENTERMOUNT), гаралтын цэгийн inode-ын тоо буцна гэхдээ үүний лавлагааны тоо өөрчлөгдөлгүй хэвээр үлдэнэ. Æè÷ • Õýðâýý òóõàéí ¿íäñýí äèðåêòîðûí inode íü òýã áèø áîë ôàéëûí ñåðâåð íü sym õîëáîîã ººðºº øèéäâýðëýõýä ¿ðãýëæëýãäýí àøèãëàãäàæ áîëíî. • Ôàéëûí ñåðâåð íü õýçýý ÷ çàìûí õýñãèéã õýðýãëýõã¿éãýýð EENTERMOUNT áóöààõ ¸ñã¿é, ôàéëûí ñåðâåðèéí äîòîð õýçýý ÷ äóóñàøã¿é äàâòàëò ¿¿ñ÷ áîëçîøã¿é. Õýðâýý ôàéëûí ñåðâåð “..”-ýýñ áóñàä àëü íýã òýìäýãò ìýòýýð àâ÷ ¿çâýë ýöñèéí öýãýýñ áîëîìæã¿éãýýð ýõýëíý, ýíý áàéðëàë áèé áîëîõ ¸ñã¿é. • Ýíý õýñãèéã ¿çñýíýýð øààðäëàãûí äàãóó õýðýãæ¿¿ëýëòýä õ¿ðýõýä áîëîìæòîé. REQ_CREATE_S Ýíãèéí ôàéë ¿¿ñãýõ Õ¿ñýëòèéí õýñýã REQ_INODE_NR m6_11 ino_t øèíý ôàéë äàõü àãóóëàõ äèðåêòîðûí inode-ûí òîî REQ_MODE m6_s3 mode_t ôàéëûí çàãâàð REQ_UID m6_c1 uid_t ôàéë äàõü õýðýãëýã÷èéí ID REQ_GRANT m6_13 cp_grant_id_t ñ¿¿ë÷èéí çàìûí õýñýã äýõ ñàíàõ îéí ýðõ(óíøèõ) REQ_PATH__LEN m6_s2 unsigned short ñ¿¿ë÷èéí çàìûí õýñýã äýõ óðò Õàðèó õýñýã RES_INODE_NR m6_11 ino_t upon success: ¿¿ñãýñýí ôàéëûí inode äóãààð RES_MODE m6_s1 mode_t upon success: ¿¿ñãýñýí ôàéëûí çàãâàð RES_FILE_SIZE m6_12 off_t upon success: ¿¿ñãýñýí ôàéëûí õýìæýý RES_UID m6_s3 uid_t upon success: ¿¿ñãýñýí ôàéëûí õýðýãëýã÷èéí ID RES_GID m6_c1 gid_t upon success: ¿¿ñãýñýí ôàéëûí á¿ëýã ID RES_DEV m6_13 dev_t upon success: òºõººðºìæèéí çàíãèëààíû index RES_INODE_INDEX m6_c2 unsigned short upon success: ýíý inode òîé íýãòãýõ inode èíäåêñ Õàðèó êîäóóä ENAMETOOLONG ñ¿¿ë÷èéí çàìûí á¿ðýëäýõ¿¿í õýñýã íü ôàéëûí ñèñòåìèéí õýìæýýíýýñ èë¿¿ áàéõ EEXIST äèðåêòîðò íýâòðýõ òóõàéí íýð íü àëü õýäèéí ¿¿ññýí ENFILE inode-ã¿é áàéõ íü áîëîìæòîé ENOSPC áàãòààìæã¿é áîëîõ íü òºõººðºìæèéí áóðóó EFBIG àãóóëàõ äèðåêòîð íü ÿìàð íýãýí îðîëòûã óäèðäàæ ÷àäàõã¿é áàéõ OK ýíãèéí ôàéë ¿¿ñ÷ íýýãäñýí Òýìäýãëýë • Ýíý óäàà ýíãèéí øèíý ôàéëûã ºãºãäñºí øèíæ ÷àíàðóóäòàé íü ¿¿ñãýõ, íýýõ (1 ýýñ òîîëîõîîð õîëáîãäîæ òîõèðóóëàõ) ìºí òóõàéí ìýäýýëë¿¿äèéã VFS-ð¿¿ ºãºõèéã ñóäàëíà. Æè÷ • ªãºãäñºí çàãâàð íü S_IFREG õýëáýðèéã àãóóëäàã. • Ôàéëûí õýìæýýíèé õàðèó íü 0 õýëáýðòýé áàéõ • Ýíý íü ñàíàë áè÷èõ, ìºí ôàéëûí ñèñòåìýýñ çºâõºí õàðàõ áà èëãýýõ áîëîìæã¿é áàéõ • Íýýëòòýé á¿ëýã õîëáîîñóóä • POSIX: àìæèëòòàé ¿¿ñãýñíýýð øèíý ôàéë íü ATIME, CTIME, MTIME áà àãóóëàã÷ äèðåêòîð íü øèíý÷ëýãäñýí CTIME áà ATIME áàéíà. EWNODE REQ_NODE Íýýëòòýé õîëáîîñã¿é ôàéë ¿¿ñãýõ Õ¿ñýëòèéí õýñýã REQ_MODE m6_s3 mode_t inode-ûí çàãâàð REQ_DEVx m6_12 dev_t inode äàõü òºõººðºìæèéí òîî REQ_UID m6_s1 uid_t inode äàõü õýðýãëýã÷èéí ID REQ_GID m6_c1 gid_t inode äàõü á¿ëýã ID Õàðèó õýñýã RES_INODE_NR m6_11 ino_t upon success: ¿ð ä¿íãèéí inode-ûí inode äóãààð RES_MODE m6_s1 mode_t upon success: ¿ð ä¿íãèéí inode-ûí çàãâàð RES_FILE_SIZE m6_12 off_t upon success: ¿ð ä¿íãèéí inode-ûí õýìæýý RES_DEV m6_13 dev_t upon success: ¿ð ä¿íãèéí inode-ûí òîî RES_UID m6_s3 uid_t upon success: ¿ð ä¿íãèéí inode-ûí õýðýãëýã÷èéí ID RES_GID m6_c1 gid_t upon success: ¿ð ä¿íãèéí inode-ûí á¿ëýã ID Õàðèó êîäóóä ENFILE inode-ã¿é áàéõ áîëîìæòîé OK ò¿ð çóóðûí inode ¿¿ñ÷ íýýãäñýí Òýìäýãëýë • Ýíý óäàà íýýãäýõ áîëîâ÷ õîëáîîñã¿é ôàéë ¿¿ñãýíý. Õýðâýý àìæèëòòàé áîë 1ýýñ ýõëýí òîîëîõòîé õîëáîîòîé inode íü áóöààíà, ýíý inode íü õîëáîîòîé òîîöîîëóóð áóóðààä àõèí 0 õ¿ðòýë îðøèí áàéíà, çºâõºí ¿íäñýí ôàéëûí ñåðâåð REQ_NEWNODE óòãûã áóöààíà, ôàéëûí ñåðâåð íü ýíý õàíäàëòûã ÿäàõäàà òýìäýãò, ôàéë äàìæóóëàëò ¿¿ñãýõýä äýìæèëòèéã íü õýðýãæ¿¿ëíý. Æè÷ • Òîäîðõîé àðãûí äóãààð íü òóñãàé áëîêëîãäñîí áîëîí òóñãàé òýìäýãò ôàéëòàé õîëáîîòîé. • Ôàéëûí õýìæýýã 0 õýëáýðýýð áóöààäàã áàéõ. • Ôàéëûí ñåðâåð íü ¿íäñýí ôàéëûí ñèñòåì ººð÷ëºõ øààðäëàãûã õàíãàäàã áàéõ õýðýãòýé Ýíý íü áè÷èãäñýí øààðäëàãà, çºâõºí õàðàõ, èëãýýõã¿é çàð÷èìòàé áàéõ õýðýãòýé '--------------------------------------------------------------------------------------------------' REQ_NEW_DRIVER Үндсэн төхөөрөмжид шинэ драйверын (техник хангамжийг үйлдлийн системтэй холбож өгдөг програм хангамж ) үзүүр суулгах. Хүсэлтийн талбарууд REQ_DEV m6_13 dev_t- төхөөрөмжийн дугаар REQ_DRIVER_E m6_l2 endpoint_t –драйверийн үзүүр хошуу Хариу талбарууд • хэвийн Хариу кодууд • OK захиалгат процесс амжилттай хэрэгжлээ. Тайлбар • Энэ хүсэлт нь файл серверт үндсэн төхөөрөмжийн дугаарт ямар үзүүрийн хошуу ашиглагдахыг хэлж өгдөг. Ингэснээр төхөөрөмжөөр төхөөрөмжийн драйвертай ойлголцохын тулд үзүүрийн хошуу хэрэглэх хэрэгтэй болно. Тэмдэглэлүүд • Файл сервер, төхөөрөмжийн өгсөн дугаарын жижиг хэсгийг эс зөвшөөрнө. • Суурилуулаагүй үед зөвхөн үндэс файл сервер төхөөрөмжийн хүсэлтийг хүлээн авна. REQ_BREAD_S Бичил төхөөрөмжөөс шууд унших Хүсэлтийн талбарууд REQ_XFD_BDEV m2_i1 dev_t төхөөрөмж дугаар REQ_XFD_GID m2_i2 cp_grant_id_t санах ойн (бичих) өгөгдлийг хадгалах боломжтой зөвшөөрөл REQ_XFD_POS_LO m2_l1 off_t байрлал доод 32 бит REQ_XFD_POS_HI m2_l2 off_t байрлал дээд 32 бит REQ_XFD_NBYTES m2_i3 unsigned int унших байтийн дугаар Хариу талбарууд RES_XFD_POS_LO m2_l1 unsigned long байрлал олох доод 32 бит: амжилт ба саатал гарах RES_XFD_POS_HI m2_l2 unsigned long байрлал олох дээд 32 бит: амжилт ба саатал гарах RES_XFD_CUM_IO m2_i1 unsigned int байтаар унших нийт дугаар: амжилт ба саатал гарах Хариу кодууд EIO Төхөөрөмж холбоход оролт гаралтын алдаа гарах OK Амжилттай уншиж байх, эсвэл EOF холбогдсон Тайлбар • Тусгай бичил файлаас хүсэлтийг уншсанаар, үр дүнг энэ хүсэлт бичил төхөөрөмжөөс шууд уншдаг. Файл серверүүд хүсэлт суурилуулсан үед ба бичил төхөөрөмжөөс хүсэлт хүлээн авна. Энэ нь дотоод нөөцтэй таарч байхад тэдгээр дамжуулалт хийхийг дэмждэг. Тэмдэглэл • Төхөөрөмж хүсэлт дуусахаас өмнө хагас дутуу гарж тасалдаж магадгүй. Хүсэлтүүд бүхэлдээ биелж дуусахад төхөөрөмж EOF шиг ашиглана. Жишээ нь : тэг байтууд унших. • Бүх бичил төхөөрөмжүүдэд хүсэлт cуурилуулагдаагүй байхад ихэвчлэн үндэс файлын систем хүлээн авахыг файл сервер харгалзан үзнэ. REQ_BWRITE_S Бичил төхөөрөмж шууд бичихийн тулд. Хүсэлтийн талбарууд REQ_XFD_BDEV m2_i1 dev_t төхөөрөмж дугаар REQ_XFD_GID m2_i2 cp_grant_id_t санах ойн (унших) өгөгдлийг бичих боломжтой зөвшөөрөл REQ_XFD_POS_LO m2_l1 off_t байрлал доод 32 бит REQ_XFD_POS_HI m2_l2 off_t байрлал дээд 32 бит REQ_XFD_NBYTES m2_i3 unsigned int бичих байтийн дугаар Хариу талбарууд RES_XFD_POS_LO m2_l1 unsigned long байрлал олох доод 32 бит: амжилт ба саатал гарах RES_XFD_POS_HI m2_l2 unsigned long байрлал олох дээд 32 бит :амжилт ба саатал гарах RES_XFD_CUM_IO m2_i1 unsigned int байтаар бичсэн нийт дугаар: амжилт ба саатал гарах Хариу кодууд EIO Төхөөрөмж холбоход оролт гаралтын алдаа гарах OK Амжилттай уншиж байх, эсвэл EOF холбогдсон Тайлбар • Тусгай бичил файлруу хүсэлтийг бичсэний үр дүнд энэ бичил төхөөрөмжөөс шууд хүсэлт бичнэ. Файл серверүүд хүсэлт суурилуулсан үед ба бичил төхөөрөмжөөс хүсэлт хүлээн авна. Энэ нь дотоод нөөцтэй таарч байхад тэдгээр дамжуулалт хийхийг дэмждэг. Суурилуулсан бичил төхөөрөмжрүү тодорхойлогдоогүй утга бичсэн хүсэлтийг файл сервер тогтоох, хэрхэхийг шийдвэрлэх болно. Тэмдэглэл • Төхөөрөмж хүсэлт дуусахаас өмнө хагас дутуу гарж тасалдаж магадгүй. Хүсэлтүүд бүхэлдээ биелж дуусахад төхөөрөмж EOF шиг ашиглана. Жишээ нь : тэг байтууд бичих. • Бүх бичил төхөөрөмжүүдэд хүсэлт cуурилуулагдаагүй байхад ихэвчлэн үндэс файлын систем хүлээн авахыг файл сервер харгалзан үзнэ. • Хүсэлт бичиж байгаа нь ихэвчлэн зөвхөн унших файл системрүү явуулж байхаар зохиогдсон байдаг. Нэмэлт мэдээлэл Доорх хүсэлтийг нэвтрүүлээрэй Доорх нэвтрүүлж үзэх боломжтой нэг REQ_LOOKUP_S нууц кодын гол хэрэгжүүлэлтийг сонирхоё, хүсэлт: • Шийдэх зам буцааж авах ENAMETOOLONG • Сонгосон зангилаагаа эхлэх зангилаа гэж авья • Үлдэж байгаа замын хэсэг хоосон биш үед, o Зам дахь тэг эсвэл ‘/’ тэмдэгт дээгүүр алгасна o Хэрэв үлдэж байгаа зам хоосон бол, “.” байгуулагч хэрэглэнэ o тийм биш бол,дараагийн ‘/’-бүрэлдэхүүн ENAMETOOLONG хэсэг гэж авна o сонгосон зангилаа тэмдэглэгдсэн цэг бол,  Хэрэв бүрэлдэхүүн хэсэг байхгүй бол“..”:EINVAL o Тийм биш бол,  Хэрэв сонгосон зангилаа хавтсанд байхгүй бол : ENOTDIR  Хэрэв дуудагч хайхгүй, сонгосон зангилаадаа хандахыг зөвшөөрвөл: EACCES o Хэрэв бүрэлдэхүүн хэсэг “.” юмуу ”..” мөн байгаа хавтас нь үндэс зангилааг өгдөг бол,  Үргэлжлүүлэх o Тийм биш бол, бүрэлдэхүүн хэсэг “..” бол,  Хэрэв сонгосон зангилаа нь файл систем үндэс хавтас бол: ELEAVEMOUNT  сонгосон зангилааныхаа эцэг зангилааг сонгосон зангилаа гэж авна  Хэрэв шинэ зангилаа тэмдэлэгдсэн зангилаа бол: EENTERMOUNT o Тийм биш бол, хэрэв бүрэлдэхүүн хэсэг адил холбоосыг ялгавал, аль эсвэл замд сүүлчийнх нь гэж байхгүй эсвэл PATH_RET_SYMLINK байхгүй.  Хэрэв адил холбоостын тоо нэгээс илүү олширвол SYMLOOP_MAX: ELOOP  Ижил холбоосоос тогтох шинэ зам суулгахдаа сонгосон байгаа замынхаа үлдсэн хэсэгт нэмнэ ENAMETOOLONG  Хэрэв одоо сонгосон байгаа зам а ‘/’-аар эхэлдэг бол : ESYMLINK o Тийм биш бол,  Сонгосон байгаа зангилаандаа бүрэлдэхүүн хэсгээс ялгасан зангилаагаа өгнө : ENOENT  Хэрэв одоогийн сонгосон зангилаа тэмдэглэгдсэн байсан бол : EENTERMOUNT • Үр дүнд байгаа зангилаагаа нээх OK Файл сервес тэмдэгт ба/эсвэл тэмдэглэгдсэн холбоосыг дэмждэггүй учир хайлт хийхэд хялбарчилж чадсан. Өчүүхэн бага ижил холбоос шийдэгдвэл EENTERMOUNT, ELEAVEMOUNT эсвэл ESYMLINK гэсэн алдаа эргүүлж өгнө, шинэ замынхэсэг шийдэгдэхгүй бол VFS-рүү эргүүлж хуулах хэрэгтэй. Үл хамаарах, • ELEAVEMOUNT гэсэн сонголт бол давталт давтагдах бол бүрэлдэхүүн хэсгийн эхлэлийг “..” тэнцвэржүүлэн утга буцаахыг заана. • EENTERMOUNT гэсэн сонголт бол зорисон mountpoint бүрэлдэхүүний араас эхний тэмдэгтийг зааж өгснөөр утга буцаана. • ESYMLINK гэсэн сонголт бол ердийн тэг утга буцаана. Иш татсан зүйл Энэ баримт нь Балазс Герофийн жинхэнэ VFS-FS протокол баримт бичигт суурилаагүй. Хэдий тийм боловч энэ баримтад нэмэлт нээх материалаар хангалаа. Design and implementation of the MINIX Virtual File system Balazs Gerofiе-ийн бичсэн / 8 сар, 2006/ REQ_RENAME_S Файл болон каталогийн нэрийг нь өөрчлөх. Хүсэлтийн талбарууд REQ_REN_OLD_DIR m2_l1 ino_t Тоон заагч нь агуулах каталогийн хуучин файл REQ_REN_NEW_DIR m2_l2 ino_t Тоон заагч нь агуулах каталогийн шинэ файл REQ_REN_GRANT_OLD m2_i1 cp_grant_id_t Зөвшөөрөгдсөн санах ойн (уншихад) хуучин сүүлийн бүрэлдхүүн хэсэг REQ_REN_LEN_OLD m2_i2 unsigned short хуучин сүүлийн бүрэлдхүүн хэсгийн урт REQ_REN_GRANT_NEW m2_i3 cp_grant_id_t Зөвшөөрөгдсөн санах ойн (уншихад) шинэ сүүлийн бүрэлдхүүн хэсэг REQ_REN_LEN_NEW m2_s1 unsigned short шинэ сүүлийн бүрэлдхүүн хэсгийн урт Хариу өгөх талбар • хоосон Хариу өгөх кодууд ENAMETOOLONG Сүүлийн бүрэлдхүүн хэсэг файлийн систем өгөхөөс урт байна. ENOENT хуучин файл оршин байдйггүй. OK Хуучин болон шинэ сүүлийн бүрэлдхүүн хэсэг ба агуулах каталог нь хоорондоо төстэй. EBUSY Хуучин файл бол каталогтой залгах EINVAL Өөрийн дэд модон дотор каталогийг шилжүүлэхэд хийгдэх оролдлого юм. EINVAL “.” Эсвэл “..”бол хуучин болон шинэ сүүлийн бүрэлдхүүн хэсэг EMLINK Хуучин файл бол каталог ба шинэфайлд оршин байхгүй, гэвч хамгийн их тоогоор холбогдсон шинэ агуулах каталогт байна. ENOTDIR хуучин файл бол каталог ба шинэ файлд оршин байсан ч каталогт байхгүй. EISDIR Хуучин файл каталог биш ба шинэ файл каталогт оршин байна. ENOTEMPTY Шинэ файл бол каталог гэвч хоосон биш байна. EBUSY Шинэ файл бол файлын системийн үндсэн каталогт байна. ENOSPC Хэмжээгүй бол тоног төхөөрөмжийн зүүнд байна. EFBIG Шинэ агуулах каталог нь гараар хандаж чаддаггүй ямарваа бүртгэлүүдийг илүү хйидэг. OK Файлын нэрийг өөрчилсөн. Тодорхойлолт • энэ хүсэлт нь файлын нэрийг өөрчлөх эсвэл каталогийн шинэ нэр (сүүлийн бүрэлдхүүн хэсэг) ба шинэ агуулах каталог юм. Файлын нэрийг өөрчлөх гэж хандахад өөрийх нь талаар OK-ийг буцааж өгөх ёстой.Өөр арга нь, хэрвээ шинэ нэр нь шинэ агуулах каталогт аль хэдийнэ оршин байсан, ба энэ нь каталогийн төрөл болох хуучин файлтай төстэй(каталог эсвэл каталог биш гэх мэт), тэгээд холбоосгүй гэж хэлэх эсвэл rmdir нь шинэ сүүлийн бүрэлдхүүн хэсгийн эхнийхийг ,хязгаарлалттай төстэйгөөр тэдгээрийг дуудахдаа ашигладаг. Файлын системийн тогтвортой байдлыг сахихдаа бусад хязгаарлалтуудыг ерөнхийд нь хэрэглэдэг. Тайлбар • тиймээс мэдээлэл гэж нэрлэгддэггүй хүсэлтийг ханган нийлүүлсний дараа, the sticky bit (S_ISVTX) нь энэ цагт дэмжигдэж чаддаггүй. • Энэ нь хүсэлтийг бичих ба зөвхөн уншдаг файлын системээс илгээж чадахгүй.. • Нээлттэй группын холбоо: нэрийг нь өөрчлөх • POSIX тайлбарууд:амжилт дээр, CTIME ба MTIME бол хуучин болон шинэ агуулагч каталогийгшинэчлэдэг. ________________________________________ REQ_SLINK_S Шинээр холбоо бий болгох. Хүсэлтийн талбарууд REQ_INODE_NR m6_l1 ino_t Тоон заагч нь агуулах каталогийн шинэ файл REQ_GRANT m6_l3 cp_grant_id_t Зөвшөөрөгдсөн санах ойн (уншихад) холбоосын нэр нь сүүлийн бүрэлдхүүн хэсэг REQ_PATH_LEN m6_s2 unsigned short холбоосын нэрийн урт сүүлийн бүрэлдхүүн хэсэг байна. REQ_GRANT2 m6_l2 cp_grant_id_t Зөвшөөрөгдсөн санах ойн (уншихад) холбоосын даалгавар('\0' мөр агуулаагүй) REQ_SLENGTH m6_s3 size_t Холбоосын даалгаварын урт ('\0' мөр агуулаагүй) REQ_UID m6_s1 uid_t Шинээр холбох хэрэглэгчийн ID REQ_GID m6_c1 gid_t Шинээр холбох группын ID Хариу өгөх талбар • хоосон Хариу өгөх кодууд ENAMETOOLONG Сүүлийн замын бүрэлдхүүн хэсэг бол файлын систем өгөхөөс урт байна. EEXIST Каталог нь орж ирэхдээ нэр нь аль хэдий нь оршин байна. ENFILE Заагчууд байдаггүй ENOSPC Төхөөрөмжид зай үлдээгүй. EFBIG Агуулагч каталог нь ямар 1илүү их зүйл орохыг зохицуулж чадахгүй. ENAMETOOLONG Холбоосын даалгавар нь '\0' байтыг агуулна. OK Шинээр холбоо бий болгох. Тодорхойлолт • Энэ хүсэлт нь шинэ холбоосын бүртгэл хийх файлын серверт заавар өгдөг. Үр дүнд нь symхолбоосын загвар холбоос I_SYMBOLIC_LINK|0777 (octal) байхаар байдаг. Symхолбоос нь хаалттай дурын өгөгдөлтэй хүсэлт рүү хандахад холбоосын даалгавар өгөхөд чиглэх ёстой. Тайлбар • MINIX 3одоогоор Symхолбоосын хамгийн их утга тодорхойлогдоогүй. Холбоосын даалгавар багтаасан хамгийн бага хэмжээ 1-2 байтын хооронд байхад баталдаг. • Энэ бичсэн хүсэлд нь файлийн системүүдэд илгээхгүй ба зөвхөн уншина. • Нээлттэй группын холбоо: symхолбоо • POSIX тайлбар: амжилт дээр, шинэ symхолбоос бол ATIME, CTIME ба MTIME, агуулагч каталог бол CTIME ба MTIME –ийг шинэчдэг. ________________________________________ REQ_RDLINK_S шинэ холбоосын даалгаварыг буцааж өгөх Хүсэлтийн талбарууд REQ_INODE_NR m6_l1 ino_t Заагч тоо REQ_GRANT m6_l3 cp_grant_id_t Зөвшөөрөгдсөн санах ойн(бичихэд ) үр дүнг буфферт бичих REQ_SLENGTH m6_s3 unsigned short Буферт бичих хэмжээ Хариу өгөх талбар RES_RDL_LENGTH m6_l1 int Амжилт дээр: тоог байтуудаар бичих Хариу өгөх кодууд OK Буферт үр дүнг хадгалах Тодорхойлолт • Энэ нь файл серверт хариулахдаа шинэ холбоосд холбоосын даалгаварыг хуулахад зөвшөөрөл өгдөг. Төгсгөхдөө '\0' тэмдэгтийг бичих шаардлагагүй. Хэрвээ буферт өгөхдөө холбоосын даалгавараас илүү жижиг, хэсэгхэн үр дүнг бичиж өгдөг. Тайлбарууд • VFS –ийг шалгахгүйгээр шинэ холбоосоос зөвшөөрөл өгнө. • Нээлттэй группын холбоос: унших холбоос ________________________________________ Олон төрлийн файлын системийн үйлдлүүд REQ_MOUNTPOINT_S Заагчийг залгах үнэлгээ Хүсэлтийн талбарууд REQ_INODE_NR m6_l1 ino_t Заагч тоотой файл цэгэн залгахыг хэрэглэх Хариу өгөх талбарууд • Хоосон Хариу өгөх кодууд EBUSY Заагч нь аль хэдийнэ цэг залгахыг хэрэглэсэн ENOTDIR Заагч өгөхөд каталогт байхгүй OK Цэг залгахад заагчийн үнэлгээ Тодорхойлолт • Энэ хүсэлт нь заагчил үнэлгээ өгөхдөө өөр файлын системээс залгах замаар хэрэглэдэг. VFS заагчийг нээхдээ уртаар залгаж хадгалдаг ба REQ_PUTNODE –нд хүсэлтээс илгээдэг энэ нь бусад файлын системээс гаргадаггүй. Тайлбарууд • Өөр ятар 1 хүсэлтээс заагч тоонд цэгээр залгаж оруулж болохгүй, үүнээс гадна REQ_LOOKUP_S хүсэлтийг үргэлжлүүлэхдээ цэгээр залгахыг хэрэглэнэ. Үүний мөн чанар нь ,заагчийн бүлгүүд нь залгагдахдаа бүхэлдээ нууцлагдсан байдаг. • Гол зарчим нь , зөвхөн каталогуудаас биш зохион байгуулж чадна; энэ нь тогтмол файлуудаас зохион байгуулсан VFS ба MFS-ийн аль аль нь дэмждэг . Файл сервер нь магадгүй зөвхөн ENOTDIR –ийн үр дүнг сонгохдоо үүнийг дэмждэг заагч нь цэгээр залгахыг дэмждэггүй байж болох юм. Лавлахад нэвтрэх оролдлого REQ_MKDIR_S Лавлах үүсгэх Хүсэлтийн талбарууд: REQ_INODE_NR m6_l1 ino_t шинэ файлын үндсэн каталогийн заагчийн тоо. REQ_MODE m6_s3 mode_t каталогын загвар REQ_UID m6_s1 uid_t каталогийн хэрэглэгчийн ID REQ_GID m6_c1 gid_t каталогийн группын ID REQ_GRANT m6_l3 cp_grant_id_t сүүлийн бүрэлдэхүүн хэсгийн зөвшөөрөгдсөн санах ой REQ_PATH_LEN m6_s2 unsigned short сүүлийн бүрэлдэхүүн хэсгийн урт Хариу өгөх талбарууд • хоосон Хариу өгөх кодууд ENAMETOOLONG сүүлийн бүрэлдэхүүн хэсэг файлыг дэмжих системээс урт байх EEXIST лавлахад нэвтрэхэд уг нэр нь аль хэдийн байршсан байх ENFILE заагчгүй байхад ENOSPC төхөөрөмжийн зүүн талд сул орон зай байхад EFBIG агуулах каталог нь илүү нэвтрэлтийг ажиллуулж чадахгүй байх EMLINK агуулах каталог нь холбоосын тоо max болсон үед OK каталог үүсэхэд Тодорхойлолт • Энэ хүсэлт нь шинэ каталогийн төлөв байдал өгөгдсөн үед үүсдэг. Тайлбарууд • Өгөгдсөн өгөгдөл нь S_IFDIR хэлбэрийг агуулж байдаг . • Энэ хүсэлт нь бичих болон зөвхөн унших файлын систем рүү илгээгдэхгүй. • Нээлттэй группын холбоос: mkdir • POSIX notes: Уг хүсэлт нь амжилттай болсноор шинэ каталогийн ATIME,TIME, MTIME болон агуулах каталогийн CTIME, MTIME нь шинэчлэгддэг. ________________________________________ REQ_MKNOD_S Тусгай файл үүсгэх. Хүсэлтийн талбарууд REQ_INODE_NR m6_l1 ino_t шинэ файлын үндсэн каталогийн заагчийн тоо. REQ_MODE m6_s3 mode_t каталогын загвар REQ_DEVx m6_l2 dev_t төхөөрөмжийн тоо REQ_UID m6_s1 uid_t каталогийн хэрэглэгчийн ID REQ_GID m6_c1 gid_t каталогийн группын ID REQ_GRANT m6_l3 cp_grant_id_t сүүлийн бүрэлдэхүүн хэсгийн зөвшөөрөгдсөн санах ой REQ_PATH_LEN m6_s2 unsigned short сүүлийн бүрэлдэхүүн хэсгийн урт Хариу өгөх талбарууд • хоосон Хариу өгөх кодууд ENAMETOOLONG сүүлийн бүрэлдэхүүн хэсэг файлыг дэмжих системээс урт байх EEXIST лавлахад нэвтрэхэд уг нэр нь аль хэдийн байршсан байх EINVAL өгөгдсөн файлын хэлбэр нь дэмжигдэхгүй ENFILE заагчгүй байхад ENOSPC төхөөрөмжийн зүүн талд сул орон зай байхад EFBIG агуулах каталог нь илүү нэвтрэлтийг ажиллуулж чадахгүй OK каталог үүссэхэд Тодорхойлолт • Энэ хүсэлт нь шинэ каталогийн төлөв байдал өгөгдсөн үед үүсдэг. Өгөгдсөн дурын загвар энэ хэлбэрт агуулагддаг ба идэвхгүй байж болно. Тайлбар • Энэ хүсэлт нь бичих болон зөвхөн унших файлын систем рүү илгээгдэхгүй. • Нээлттэй группын холбоос: mkdir • POSIX тайлбар: Уг хүсэлт нь амжилттай болсноор шинэ каталогийн ATIME,TIME, MTIME болон агуулах каталогийн CTIME, MTIME нь шинэчлэгддэг. ________________________________________ REQ_LINK_S Файлд бат холбоос үүсгэх Хариу өгөх талбарууд REQ_LINKED_FILE m6_l1 ino_t холбоос файлын заагчийн тоо REQ_LINK_PARENT m6_l2 ino_t Заагчийн тоо шинэ холбоосын каталогт агуулагддаг REQ_GRANT m6_l3 cp_grant_id_t сүүлийн бүрэлдэхүүн хэсгийн зөвшөөрөгдсөн санах ой REQ_PATH_LEN m6_s2 unsigned short сүүлийн бүрэлдэхүүн хэсгийн урт Хариу өгөх талбарууд • хоосон Хариу өгөх кодууд ENAMETOOLONG сүүлийн бүрэлдэхүүн хэсэг файлыг дэмжих системээс урт байх EEXIST каталогт нэвтрэхэд уг нэр нь аль хэдийн байршсан байх EPERM холбоост файлын каталог EMLINK холбоост заагч нь холбоосын тоо max болсон үед ENOSPC төхөөрөмжийн зүүн талд сул орон зай байхад EFBIG агуулах каталог нь илүү нэвтрэлтийг ажиллуулж чадахгүй байх OK шинэ холбоос үүсгэх Тодорхойлолт • Энэ хүсэлтээр шинэ лавлах үүсгэхдээ хардлинкийг давхцсан заагч рүү шилжүүлдэг. Тайлбарууд • Каталогуудыг холбож болно, гэвч энэ нь дэмжигддэггүй. • Энэ хүсэлт нь бичих болон зөвхөн унших файлын систем рүү илгээгдэхгүй • Нээлттэй группын холбоос: link • POSIX тайлбар: уг хүсэлт нь амжилттай болсноор шинэ холбоосын каталогт агуулагдах CTIME, MTIME болон файлын холбоосын CTIME шинэчлэгддэг. REQ_UNLINK_S Холбоосгүй файл Хүсэлтийн талбарууд REQ_INODE_NR m6_l1 ino_t шинэ файлын үндсэн каталогийн заагчийн тоо. REQ_GRANT m6_l3 cp_grant_id_t сүүлийн бүрэлдэхүүн хэсгийн зөвшөөрөгдсөн санах ой REQ_PATH_LEN m6_s2 unsigned short сүүлийн бүрэлдэхүүн хэсгийн урт Хариу өгөх талбарууд • хоосон Хариу өгөх кодууд ENAMETOOLONG сүүлийн бүрэлдэхүүн хэсэг файлыг дэмжих системээс урт байх ENOENT каталогт нэвтрэхэд уг нэр нь байршсан байх EPERM каталог нь өгөгдсөн нэрээс хамаарах OK холбоосгүй файл Тодорхойлолт • Холбоосгүй файлын хүсэлт. Заагч нь каталогт илэрхийлэгдэх албагүй. Тайлбарууд • Холбоосгүй каталогууд нь хэрвээ дэмжигдэхгүй бол энэ нь зөвхөн супер хэрэглэгчдэд зориулагдсан байдаг:энэ хүсэлтээс хойш дуудсан мэдээг хүлээн авахгүй, тиймээс холбоосгүй каталог нь дэмжигддэггүй. • Зарим үед зөвшөөрөгдсөн бит (S_ISVTX) нь тухайн цагт дэмжигддэггүй • Энэ хүсэлт нь бичих болон зөвхөн унших файлын систем рүү илгээгдэхгүй • Нээлттэй группын холбоос: unlink • POSIX тайлбар: Уг хүсэлт нь амжилттай болсноор холбоосгүй файлын CTIME болон каталогт агуулагдах CTIME, MTIME-ийг шинэчлэдэг.